The present invention relates in general to the field of computing in resource-poor environments, such as mobile and wireless computing systems, and, more particularly, to a method for the adaptation of component-based application programs.
A user""s computing experience is affected by the scarcity or abundance of computer resources. One such resource is network bandwidth in the client-server computing model. The less bandwidth available to the user, the less quickly the user will be able to access data over a communications link or run applications that rely on data transmitted through the communications link. The bandwidth limitation is aggravated in the case of mobile clients, i.e., clients that exist in client-server environments or other environments and that attempt to transmit data through wireless or other non-fixed connections. Further, when applications or data designed for high bandwidth networks is used in bandwidth-limited networks, the computing environment of a user at a client computer, including mobile client computers, can become extremely slow. For mobile clients that rely on standalone battery power, the time consumed by receiving a file over a bandwidth-limited network also consumes computing time that could be spent on other tasks.
Adaptation is the manipulation of the operation of an application or the alteration of data that is being used by or transmitted to or from an application. The two fundamental kinds of adaptation are control adaptation, such as when the operation of an application is manipulated, and data adaptation, which occurs when the data of application is adapted. A common example of control adaptation occurs when control is returned to the user after only a subset of the requested data is loaded by the application, even though the normal behavior of the application would require that all of the data be loaded before control is returned to the user. A common example of data adaptation occurs when the content of a data element is altered to improve the latency effect of computing with the data in mobile computing or client-server computing environments. Many adaptation schemes involve a change to both the behavior of an application and the data of the application. Known control adaptation schemes often involved customized applications designed to be adaptable by the user, or the use of standard applications together with specialized operating systems or applications that adapt the content of data used by the applications, or combinations thereof.
Application programs may be logically organized to include several sub-applications or components. Each component of the application may perform a specialized function. As an example, an office productivity application may include a word processing component, a spreadsheet component, and an image presentation component. Although each of the components can exist separately as its own application, in this example, each of the components is a subset of a larger application. The integration of components into a larger application is made possible by the inclusion in each component of a known application programming interface (API). The use of an open API allows an application to be constructed from several individual components from several sources. In addition to APIs that allow the embedding of a document of one component within a document of another component, an application may also include an automation or scripting API that permits one component to control the behavior of another component.
Examples of component-based applications include the Microsoft Office Suite, Microsoft Internet Explorer, AOL""s Netscape Communicator, KDE Office Suite, and Star Office. Although traditionally associated with the Windows platform and with Component Object Model/Distributed Component Object Model COM/OLE technology, component-based technologies are becoming more common in the UNIX world as well, where the push for component-based technologies is being led by the GNOME and KDE projects. These open source initiatives strive to enable the development of applications that allow the seamless integration of components that have a consistent look-and-feel. An example is KOffice, an open source productivity suite with powerful scripting capabilities. More recently, StarOffice released a version of its cross-platform productivity suite that implements a sophisticated object model that allows scripting by third-party applications through a CORBA-based interface.
A file generated by a component-based application is often a compound file, containing elements created by several of the sub-applications or components. As an example, a compound file could include a spreadsheet, an image, and text. Generally, every data type in a compound file is created and managed by a separate one of the sub-applications or components. These data files may become quite large, and, when communicated in a mobile computing environment or over a client-server network, may contribute to a significant latency effect being experienced by the user. Thus, even though these compound files provide for the accumulation of several different data types within a single file, these documents can be so large that the users experience severe latency effects when requesting the delivery of these files over client-server networks.
The present invention concerns a method for adapting the operation of an application or the data being used by the application. The adaptation process involves the use of a client proxy, associated with the application being adapted, and a server proxy, associated with the data being requested by the application. The client proxy includes a policy element that directs the manner in which the application or data is adapted. Upon issuing a request for a document, the requested document is retrieved by the server proxy and translated into a data structure that is application-independent and represents the data structure of the document and the type, location, and size of the data components of the document. This data structure is transmitted to the server proxy. The policy determines from the data structure the application-specific data components of the data structure that are to be retrieved and supplied to the application.
The data supplied to the application is a variation of the data requested by the application. The variation received by the application can differ from the data requested according to both the version of the data supplied as compared to the version of the data requested and according to a subset of the data supplied as compared to the data requested. The application may be adapted in that it may operate on a lower fidelity version of the data requested or a subset of the data requested. The data of the application may be adapted in that the data may be altered to produce a lower fidelity version of the data requested.
The data of the application may be updated. The updating process may be initiated by the occurrence of a tracked event. If a tracked event occurs, such as the passage of the mouse over an image, the client proxy may request from the server proxy a higher fidelity version of a particular data element. Once received by the client proxy, the higher fidelity image is supplied to the application. The updating process may occur without reference to a tracked event and according to the policy. After the application is provided with a subset of a requested document, the server proxy may provide the client proxy with the remainder of the document requested, allowing the client proxy to provide the application with the entirety of the document requested.
The present invention is advantageous in that it improves the computing experience for computer users in resource-poor environments. By adapting an application or data, a user with power or bandwidth limitations, for example, can use applications and data written or prepared for a resource-rich environment, despite the inherent limitations of the user""s computing environment. Another advantage of the present invention is that it includes both application-independent modules and application-specific modules. As applications are adapted for the techniques of the present inventions, a suite of application-specific processing modules can be created to handle the limitations in the computing experience introduced by the application or the data created for use by the application. Further, the use of application-specific modules permits these modules to be tailored to the specific needs of the computer user. As such, these modules may be as complex as necessary to alleviate the computing resource deficiencies being experienced by the user. Other technical advantages of the present invention will be readily apparent to one skilled in the art from the following figures, descriptions, and claims.